﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using DAL;
/// <summary>
/// Summary description for ReportMovimiento
/// </summary>
public class ReportMovimiento
{
    public ReportMovimiento()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    public List<Movimiento> getMovimientosbyActivo(int idActivo)
    {
        ModContabilidad cont = new ModContabilidad();
        List<Movimiento> listaMov = new List<Movimiento>();
        List<Tbl_HistorialMovimiento> list = cont.getMovimientobyActivo(idActivo);
        if (list != null && list.Count > 0)
        {
            foreach (Tbl_HistorialMovimiento movimiento in list)
            {
                if (movimiento.iEncargadoAnterior != movimiento.iEncargadoNuevo || movimiento.sLocalizacionAnterior != movimiento.sLocalizacionNueva || list.Count == 1)
                {
                    Movimiento m = new Movimiento();
                    m.sCodigoActivo = getCodigoActivo(movimiento.iActivoFijo_id);
                    m.sEncargadoA = getEncargadoNombre(movimiento.iEncargadoAnterior);
                    m.sEncargadoN = (movimiento.iEncargadoAnterior != movimiento.iEncargadoNuevo)? getEncargadoNombre(movimiento.iEncargadoNuevo): "-";
                    m.sLocalizacionA = movimiento.sLocalizacionAnterior;
                    m.sLocalizacionN = (movimiento.sLocalizacionAnterior != movimiento.sLocalizacionNueva)? movimiento.sLocalizacionNueva: "-";
                    listaMov.Add(m);
                }
            }
        }
        return listaMov;
    }

    public class Movimiento
    {
        public string sCodigoActivo { get; set; }
        public string sLocalizacionA { get; set; }
        public string sLocalizacionN { get; set; }
        public string sEncargadoA { get; set; }
        public string sEncargadoN { get; set; }
    }

    private string getCodigoActivo(int iActivo)
    {
        ModContabilidad cont = new ModContabilidad();
        Tbl_ActivoFijos activo = cont.getActivoporID(iActivo);
        return (activo != null) ? activo.sCodigoActivoFijo : "null";
    }

    private string getEncargadoNombre(int iEncargado)
    {
        ModPersona persona = new ModPersona();
        Tbl_Personas p = persona.getPersona(iEncargado);
        return (p != null) ? p.sNombre + " " + p.sApellido_paterno + "" + p.sApellido_Materno : "null";
    }
}